/**
 * 日期时间类型定义模块
 * @module datetime/types
 * @description 提供日期时间模块中使用的所有类型定义
 */

/**
 * 时间类型联合类型
 * 支持的时间输入类型
 */
import dayjs from 'dayjs';
import { DateTime } from './dateutils/DateTime';

/**
 * 支持的时间输入类型，包括字符串、数字、Date对象、dayjs实例和DateTime实例
 */
export type TimeType = string | number | Date | dayjs.Dayjs | DateTime;

/**
 * 日期差值结果接口
 * @interface DateDiffResult
 * @description 表示两个日期时间之间的差值结果
 */
export interface DateDiffResult {
  /** 年差值 */
  years: number;
  /** 月差值 */
  months: number;
  /** 日差值 */
  days: number;
  /** 小时差值 */
  hours: number;
  /** 分钟差值 */
  minutes: number;
  /** 秒差值 */
  seconds: number;
  /** 毫秒差值 */
  milliseconds: number;
  /** 是否为负数差值（目标时间早于源时间） */
  isNegative: boolean;
}